Cùng lúc đó... RISC

Trong khi những khái niệm về RISC đang dần được hoàn thiện thì những ý tưởng nhằm cải tiến hiệu suất cho các CPU cũng bắt đầu ra đời.

Những năm đầu thập niên 1980, người ta sợ rằng, về lý thuyết, công nghệ thiết kế VXL đã đạt đến giới hạn. Sự cải tiến chỉ còn có thể thực hiện với công nghệ bán dẫn, như giảm kích thước của các transistor hoặc dây nối trên chip. Dù độ phức tạp của chip không đổi nhưng với kích thước nhỏ hơn nó vẫn có thể hoạt động ở tốc độ cao hơn. Cũng có nhiều cố gắng để thiết kế các chip xử lý song song. Thay vì làm cho chip nhanh hơn người ta làm cho nhiều chip có khả năng cùng chia sẻ các tác vụ. Tuy nhiên lịch sử đã chứng minh rằng nhận định lúc đầu là sai lầm, rất nhiều ý tưởng ra đời cuối thập niên 1980 đã cải tiến một cách toàn diện hiệu suất của các VXL thời kỳ này.

Ý tưởng đầu tiên có lẽ là "kênh dẫn" (pipeline). Đây là một kỹ thuật nhằm chia nhỏ quá trình thực thi một lệnh thành nhiều bước, và các bước khác nhau của các lệnh khác nhau có thể được thực thi đồng thời. Một bộ xử lý thông thường đọc một lệnh, giải mã nó, đọc những vùng nhớ lệnh đó cần, thực thi lệnh, trả kết quả về. Với kỹ thuật "kênh dẫn", bộ xử lý có thể đọc một lệnh ngay sau khi nó đọc xong lệnh trước đó, tức là nó vừa giải mã một lệnh vừa đọc lệnh kế tiếp, tới chu kỳ tiếp theo bộ xử lý sẽ làm việc với ba lệnh cùng lúc, và cứ thế tiếp tục. Dù thực tế không có lệnh nào được thực thi nhanh hơn, nhưng do lệnh theo sau sẽ hoàn thành ngay sau khi lệnh trước hoàn tất nên đây là một giải pháp rất hiệu quả nhằm tận dụng tối đa tài nguyên của các VXL.

Một phương án khác là dùng nhiều đơn vị xử lý song song trong cùng một bộ xử lý. Thay vì thực thi một lệnh bộ xử lý sẽ tìm cách thực thi đồng thời lệnh kế tiếp trong một đơn vị xử lý khác. Tuy nhiên đây là một phương án khó vì nhiều lệnh đôi khi lại phụ thuộc vào kết quả của lệnh trước nó.

Cả hai phương pháp trên hướng tới việc cải tiến bằng cách tăng độ phức tạp của CPU. Vì không gian trên chip là có hạn do đó để thêm những tính năng mới này người ta cần bỏ đi những tính năng khác. Vì thế RISC là kẻ được hưởng lợi trước tiên do về cấu trúc nó đơn giản hơn CISC rất nhiều. Những thiết kế RISC đầu tiên nhanh chóng được thêm những tính năng mới giúp chúng vượt qua những chip CISC tương ứng. Lúc này người ta bắt đầu tính đến việc thêm những tính năng này vào những chip CISC trong khi vẫn đảm bảo kích thước của chúng, công việc này kéo dài suốt những năm cuối thập niên 1980 và đầu 1990.

Dù ở bất kỳ cấp độ nào, đơn vị logic của một chip RISC bao giờ cũng cần ít transistor hơn so với của một chip CISC. Điều này giúp người thiết kế có rất nhiều sự linh hoạt, ví dụ họ có thể:

1. Tăng số lượng thanh ghi.2. Sử dụng các phương pháp tối ưu để tăng mức độ xử lý song song bên trong CPU (pipeline, superscalar)3. Tăng kích thước cache4. Thêm các tính năng như I/O, timer v.v…5. Thêm các bộ xử lý vector.6. Tận dụng các dây chuyền công nghệ cũ, trong khi với CISC điều này rất khó khăn do kích thước chip lớn hơn7. Cung cấp những chip cho những ứng dụng có yêu cầu cao về thời gian sử dụng pin hoặc về kích thước chip.

Những đặc điểm thường thấy trong 1 chip RISC:1. Định dạng chuẩn mã lệnh (ví dụ lệnh có chiều dài cố định, các bit của mã lệnh luôn nằm ở vị trí cố định trong mã lệnh) sẽ làm quá trình giải mã lệnh đơn giản hơn.2. Các thanh ghi đồng nhất, do đó chúng có thể được sử dụng thay thế nhau trong mọi tình huống (tuy nhiên các thanh ghi dành cho số nguyên và số thực dấu chấm động vẫn phân biệt nhau).3. Cách đánh địa chỉ đơn giản. Để có những phương pháp đánh địa chỉ phức tạp cần kết hợp với các phép toán số học.4. Hỗ trợ rất ít kiểu dữ liệu (một số chip CISC có thể có cả các lệnh thao tác với chuỗi, xử lý số phức hoặc ma trận. Những lệnh như thế chẳng bao giờ tồn tại trong 1 chip RISC lý tưởng).

Ngày nay, một số kiến trúc RISC được xây dựng dựa kiến trúc Harvard (như dòng [SH-4] của Renesas), trong đó bus dữ liệu và bus chương trình tách rời nhau. Điều này giúp cho quá trình đọc dữ liệu và mã lệnh có thể xảy ra đồng thời do đó có khả năng nâng cao hiệu suất của VXL.

Một trong những điểm yếu của các VXL RISC thế hệ đầu tiên là hiệu ứng branch delay slot. Hiệu ứng này xảy ra khi có 1 lệnh nhảy có điều kiện, lúc đó dù có thực hiện nhảy hay không thì một hoặc một số lệnh theo sau vẫn được thực thi do các lệnh này đã được đưa vào pipeline trong lúc lệnh nhảy đang được xử lý. Điều này gây ra một khoảng thời gian trễ khi thực thi lệnh nhảy có điều kiện. branch delay slot không những xuất hiện trong những VXL RISC như MIPS, PA-RISC và SPARC mà còn cả trong các DSP như µPD77230 hoặc TMS320C3x. Tuy nhiên ngày nay trong các thiết kế RISC hiện đại người ta đã có thể loại bỏ được hiệu ứng này.

Liên quan